package cn.wolfcode.luowowo.acticle.service;

import cn.wolfcode.luowowo.acticle.domain.Destination;
import cn.wolfcode.luowowo.acticle.query.DestinationQueryObject;
import cn.wolfcode.luowowo.acticle.query.DestinationThemeQueryObject;
import cn.wolfcode.luowowo.acticle.query.RegionQueryObject;
import cn.wolfcode.luowowo.common.query.QueryObject;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * 区域服务
 */
public interface IDestinationService {
    /**
     * 查询地区
     * @param qo
     * @return
     */
    PageInfo query(DestinationQueryObject qo);

    /**
     * 根据deep查询地区
     * @param deep
     * @return
     */
    List<Destination> getDestinationByDeep(Integer deep);

    /**
     * 根据区域id查询地区
     * @param rid
     * @return
     */
    List<Destination> getDestinationByRegionId(Long rid);

    /**
     * 修改状态
     * @param hot
     * @param id
     */
    void changeHotValue(Integer hot, Long id);

    /**
     * 更新简介
     * @param info
     * @param id
     */
    void setInfo(String info, Long id);

    /**
     * 删除地区
     * @param id
     */
    void delete(Long id);

    /**
     * 获取吐司
     * @param parentId
     * @return
     */
    List<Destination> getToasts(Long parentId);

    /**
     * 判断当前目的地是否是海外的
     * @param id
     * @return
     */
    boolean isBroad(Long id);

    List<Destination> list();

    /**
     * 查询出deep=3的目的地
     * @return
     */
    List<Destination> getDestinationByDeepIs3();

    /**
     * 查询当前目的地所在的国家
     * @param id
     * @return
     */
    Destination getCountry(Long id);

    /**
     * 查询当前目的地所在的省份, 国外的返回null
     * @param id
     * @return
     */
    Destination getProvince(Long id);

    /**
     * 根据多个条件查询地区
     * @param qo
     * @return
     */
    Map getDestinationBy3Condition(DestinationThemeQueryObject qo);

    /**
     * 查询国内热门旅游出发地
     * @return
     */
    List<Destination> getHotStartPlacesInChina();

    /**
     * 查询国内地区按拼音集合数据
     * @return
     */
    List<Map<String, Object>> getDestLeterMapInChina();

    /**
     * 查询热门国内旅游目的地
     * @return
     */
    List<Map<String, Object>> getHotDestinationsInChina();

    /**
     * 热门海外旅游目的地
     * @return
     */
    List<Map<String, Object>> getHotDestinationsInAbroad();
}
